package com.bkgy.modular.tpdodatacgl1870.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bkgy.modular.tpdodatacgl1870.dao.TPdoDataCgl1870Dao;
import com.bkgy.modular.tpdodatacgl1870.entity.TPdoDataCgl1870;
import com.bkgy.modular.tpdodatacgl1870.entity.TPdoDataCgl1870ForQuery;
import com.bkgy.modular.tpdodatacgl1870.service.TPdoDataCgl1870Service;
import com.bkgy.sys.common.entity.ResultData;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 本地--镀锌1870PDO-生产实绩接口具体实现类
 * @author 生成器生成
 * @date 2025-04-10 09:09:58
 */
@Slf4j
@Service
public class TPdoDataCgl1870ServiceImpl extends ServiceImpl<TPdoDataCgl1870Dao, TPdoDataCgl1870> implements TPdoDataCgl1870Service {

    @Resource
    private TPdoDataCgl1870Dao tPdoDataCgl1870Dao;

    /**
     * 添加记录
     * @param tPdoDataCgl1870 数据
     * @param userId 用户id
     * @param sname 用户姓名
     */
    public ResultData<Object> insertDataTPdoDataCgl1870(TPdoDataCgl1870 tPdoDataCgl1870, Long userId, String sname) {
        try {
            //CodiUtil.newRecord(userId, sname,tPdoDataCgl1870);
            tPdoDataCgl1870Dao.insert(tPdoDataCgl1870);
            return ResultData.ResultDataSuccessSelf("添加数据成功", null);
        } catch (Exception e) {
            log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("添加失败，错误信息为" + e.getMessage(), null);
        }
    }

    /**
     * 根据主键删除对象
     * @param indocno  对象主键
     * */
    public ResultData<Object> deleteOne(Long indocno) {
        try {
            tPdoDataCgl1870Dao.deleteById(indocno);
            return ResultData.ResultDataSuccessSelf("删除数据成功", null);
        } catch (Exception e) {
            log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("删除失败,失败信息为" + e.getMessage(), null);
        }
    }

    /**
     * 根据主键字符串删除多个对象
     * @param str_indocno 对象主键字符串
     */
    public ResultData<Object> deleteMany(String str_indocno) {
        try {
            if (!ObjectUtils.isEmpty(str_indocno)) {
                List<String> idlist = Arrays.asList(str_indocno.split(","));
                if (!ObjectUtils.isEmpty(idlist) && idlist.size() != 0) {
                    List<Integer> ids = idlist.stream().map(Integer::getInteger).collect(Collectors.toList());
                    tPdoDataCgl1870Dao.deleteBatchIds(ids);
                }
                return ResultData.ResultDataSuccessSelf("删除数据数据成功", null);
            } else {
                return ResultData.ResultDataFaultSelf("删除失败,主键集合为空", null);
            }
        } catch (Exception e) {
             log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("删除失败,失败信息为" + e.getMessage(), null);
        }
    }

    /**
     * 修改记录
     * @param userId 用户id
     * @param sname 用户姓名
     * @param tPdoDataCgl1870 数据
     */
    public ResultData<Object> updateDataTPdoDataCgl1870(TPdoDataCgl1870 tPdoDataCgl1870, Long userId, String sname) {
        try {
           // CodiUtil.editRecord(userId, sname,tPdoDataCgl1870);
            tPdoDataCgl1870Dao.updateById(tPdoDataCgl1870);
            return ResultData.ResultDataSuccessSelf("修改成功", null);
        } catch (Exception e) {
            log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("修改失败,失败信息为" + e.getMessage(), null);
        }
    }

    /**
     * 分页查看记录
     * @param tPdoDataCgl1870ForQuery 查询专用实体类
     */
    public ResultData<List<TPdoDataCgl1870>> findDataTPdoDataCgl1870ByPage(TPdoDataCgl1870ForQuery tPdoDataCgl1870ForQuery) {
        try {
            Integer pageIndex = tPdoDataCgl1870ForQuery.getPageIndex();
            Integer pageSize = tPdoDataCgl1870ForQuery.getPageSize();
            TPdoDataCgl1870ForQuery.Conditions conditions = new TPdoDataCgl1870ForQuery.Conditions();
            if (null == pageIndex || null == pageSize) {
                return ResultData.ResultDataFaultSelf("分页参数没有传", null);
            } else {
                if (null != tPdoDataCgl1870ForQuery.getCondition()) {
                    conditions = tPdoDataCgl1870ForQuery.getCondition();
                }

                LambdaQueryWrapper<TPdoDataCgl1870> wrapper = new LambdaQueryWrapper<>();

                Page<TPdoDataCgl1870> page = new Page<>(pageIndex, pageSize);
                Page<TPdoDataCgl1870> resultPage = tPdoDataCgl1870Dao.selectPage(page, wrapper);
                List<TPdoDataCgl1870> list = resultPage.getRecords();
                Integer count = (int) resultPage.getTotal();
                return ResultData.ResultDataSuccess(list, count);
            }
        } catch (Exception e) {
           // e.printStackTrace();
            log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("查询失败,失败信息为" + e.getMessage(), null);
        }
    }

    /**
     * 根据主键查询单条记录
     * @param indocno 主键
     */
    public ResultData<TPdoDataCgl1870> findDataTPdoDataCgl1870ByIndocno(Long indocno) {
        try {
            TPdoDataCgl1870 tPdoDataCgl1870 = tPdoDataCgl1870Dao.selectById(indocno);
            return ResultData.ResultDataSuccess(tPdoDataCgl1870);
        } catch (Exception e) {
            //e.printStackTrace();
            log.error(e.getMessage(),e);
            return ResultData.ResultDataFaultSelf("查询失败,失败信息为" + e.getMessage(), null);
        }
    }
}